#pragma once
#include "CursorFileData.h"
#include "ImportExport.h"

namespace ja2{ namespace sgp
{
	//! Cursor manager.
	class CursorManager : boost::noncopyable
	{
		// Enums
	public:
		//! Cursor surface type.
		enum CursorSurfaceType
		{
			CST_MISC,
			CST_ACTIONMODE,
			CST_ACTIONMODERED,
			CST_ACTIONMODEBLACK,
			CST_TARGMODEBURST,
			CST_TARGMODEBURSTRED,
			CST_TARGMODEBURSTBLACK,
			CST_TRINGS,
			CST_TWRINGS,
			CST_BLACKTARGET,
			CST_PUNCHGRAY,
			CST_PUNCHRED,
			CST_RUN1,
			CST_WALK1,
			CST_SWAT1,
			CST_PRONE1,
			CST_GRAB1,
			CST_GRAB2,
			CST_KNIFE1,
			CST_KNIFE2,
			CST_CROSS1,
			CST_CROSS2,
			CST_WWW,
			CST_LAPTOPSCREEN,
			CST_IBEAM,
			CST_LOOK,
			CST_TALK,
			CST_BLACKTALK,
			CST_REDTALK,
			CST_EXITARROWS,
			CST_STRATVEH,
			CST_STRATFOOT,
			CST_INVALIDACTION,
			CST_CHOPPER,
			CST_CHECKMARK,
			CST_YELLOWRINGS,
			CST_WIRECUT,
			CST_WIRECUTR,
			CST_RELOAD,
			CST_RELOADR,
			CST_IBEAM_WHITE,
			CST_THROWG,
			CST_THROWB,
			CST_THROWR,
			CST_ITEMTHROW,
			CST_BOMB_GREY,
			CST_BOMB_RED,
			CST_REMOTE_GREY,
			CST_REMOTE_RED,
			CST_ENTERV,
			CST_MOVEV,
			CST_WAIT,
			CST_PLACEMERC,
			CST_PLACEGROUP,
			CST_DPLACEMERC,
			CST_DPLACEGROUP,
			CST_REPAIR,
			CST_REPAIRR,
			CST_JAR,
			CST_JARRED,
			CST_X,
			CST_CAN,
			CST_CANRED,
			CST_EXCHANGE,
			CST_BULLSEYE,
			CST_JUMPOVER,
			CST_FUEL,
			CST_FUEL_RED,
		};

		// Typedefs
	private:
		typedef std::unordered_map<CursorSurfaceType, CursorFileData> CursorDataMap_t;

		// Attributes
	private:
		//! Cursor file data map.
		CursorDataMap_t m_CursorDataMap;

		// Operations
	public:

		// Construction/Destruction
	public:
		JA2_SGP_API CursorManager();
	};
} /*sgp*/} /*ja2*/
